/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.rest;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import edu.ucue.ptc.gco.dao.ProductoDAOLocal;
import edu.ucue.ptc.gco.mdl.Producto;
import edu.ucue.ptc.gco.ngc.LoteManagerLocal;
import edu.ucue.ptc.gco.ngc.ProductoManagerLocal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import edu.ucue.ptc.gco.mdl.Visita;

/**
 * REST Web Service
 *
 * @author wilo
 */
@Path("producto/{producto}/{nombre}/{clave}/{callback}")
@RequestScoped
public class ProductoResource implements Serializable{

    @Context
    private UriInfo context;

    @Inject
    private LoteManagerLocal LoteManager;
    
    @Inject
    private ProductoManagerLocal ProductoManager;
    
    
    /**
     * Creates a new instance of ProductoResource
     */
    public ProductoResource() {
    }

    /**
     * Retrieves representation of an instance of edu.ucue.ptc.rest.ProductoResource
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("application/json")
    @Named
    public String getJson(@PathParam("callback") String callback,@PathParam("nombre") String user, 
    @PathParam("clave") String pass,@PathParam("producto") String nameProducto) {
        
        try 
        {    
            List<Producto> products = ProductoManager.listarNombre(nameProducto);
        
            if(products.size()!=0)
            {
                //List<Producto> products = ProductoManager.listarTodos(user, pass);
                String cadena="({"+"\"callback\":\""+callback+"\"";
                 for(int i=0; i<products.size(); i++)
                 {
                     //if(products.get(i).getNombreProducto().compareTo(nameProducto)==0)
                     {
                         int cantidad=0;
                         for(int j=0; j<products.get(i).getLotes().size(); j++)
                         {
                             cadena= cadena+",\"producto"+j+"\":{"+"\"id\":\""+products.get(i).getIdProducto()+"\",\"nombre\":\""+products.get(i).getNombreProducto()+
                                 "\",\"categoria\":\""+products.get(i).getCategoria().getNombre()+"\",\"idLote\":\""+products.get(i).getLotes().get(j).getIdLote()+
                                 "\",\"costo\":\""+products.get(i).getLotes().get(j).getCostoVenta()+"\",\"cantidad\":\""+products.get(i).getLotes().get(j).getCantidadActual()+"\"}";
                             cantidad=cantidad+products.get(i).getLotes().get(j).getCantidadActual();
                         }
                     }
                 }
                 return callback+cadena.substring(0, cadena.length()) +"})";
            }
            else
                return callback+"({\"callback\":\""+callback+"\",\"errormsg\":\""+"Producto no registrado"+"\"})";
        } 
        catch (Exception ex) 
        {
            Logger.getLogger(ProductoResource.class.getName()).log(Level.SEVERE, null, ex);
        }
        return callback+"({\"callback\":\""+callback+"\",\"errormsg\":\""+"Producto no registrado"+"\"})";
    }

    /**
     * PUT method for updating or creating an instance of ProductoResource
     * @param content representation for the resource
     * @return an HTTP response with content of the updated or created resource.
     */
    
}
